// const pro = new Promise((resolve,reject)=>{
//   console.log('立即执行')
//   const duration = Math.floor(Math.random() * 5000)
 
//     setTimeout(() => {
//       if(duration/1000 < 0.5){
//       resolve(`成功了${duration}`)
//       }else{
//         reject(`失败${duration}`)
//       }
//     }, duration);
  

// })
// console.log(pro)
// pro.then((res)=>{
//   console.log(res)
// },
// (reject)=>{
//   console.log(reject)
// }

// )

// new Promise((resolve,reject)=>{
//   console.log('任务开始')
//   resolve(1)
//   reject(2)
//   resolve(3)
//   console.log('任务结束')
// })

// new Promise((resolve,reject)=>{
//   console.log('任务开始')
//   resolve(1)
//   // reject(2)
//   resolve(3)
//   console.log('任务结束')
// })


// const pro1 = new Promise((resolve,reject)=>{

//   throw 123
// })

// const pro2 = pro1.then().catch((err)=>{
//   console.log(err)
// })
// setTimeout(() => {
//   console.log(pro2)
//   debugger
// }, 50);


// Person.prototype.name ='1'

// function Person(){

// }
// Person.prototype = {
//   name:'cherry'
// }
// var person =new Person()
// console.log(person.name)



// function Product(name, price) {
//   this.name = name;
//   this.price = price;
// }

// function Food(name, price) {
//   Product.call(this, name, price);
//   this.category = 'food';
// }

// console.dir(Product.call)
// // debugger



// function Farther(){
  
// }
// Farther.prototype.lastname = '111111'
// function inherit(Target,Origin){
//   function F(){}
//   Target.prototype = Origin.prototype
//   // Target = new F()

// }
// function son() {
  
// }
// inherit(son,Farther)
// var so = new son()
// var fa = new Farther()
// so.lastname =
// console.log(Farther.prototype.lastname)
// console.dir(fa.lastname)
// console.dir(so.lastname)
// debugger

// "use strict"
Function.prototype.myCall = function(context) {
  console.log(context)
  console.log(Object(context))
  context = context ? Object(context) : window
  context.fn = this
  let args = [...arguments].slice(1)
  let r = context.fn(args)
  delete context.fn
  return r
}

function f1(name, price) {
  console.log(this)
  // debugger
  this.name = name;
  this.price = price;
 
  // debugger
}
const obj = {
    name:1,
    price:2,
    fn: function() {
      console.log(this)
      f1.call()
  }
}

obj.fn()





